perm filename MATCH.RLS[206,JMC] blob sn#005320 filedate 1971-01-05 generic text, type T, neo UTF8
00100	MATCHA(U,V,L) ← 
00200		IF L EQ 'NO THEN 'NO
00300		ELSE IF ATOM U THEN
00400			(IF ISVAR U THEN
00500				(LAMBDA (W);
00600					IF NULL W THEN (U.V).SUBST(V,U,L)
00700					ELSE IF CDR W = V THEN L
00800					ELSE 'NO)
00900				(ASSOC(U,L))
01000			 ELSE IF ATOM V THEN
01100				(IF ISVAR V THEN
01200					(LAMBDA (W);
01300						IF NULL W THEN
01400							(V.U).SUBST(U,V,L)
01500						ELSE IF CDR W = U THEN L
01600						ELSE 'NO)
01700				(ASSOC(V,L))
01800				 ELSE IF U = V THEN L
01900				 ELSE 'NO)
02000			 ELSE 'NO)
02100		ELSE IF ATOM V THEN
02200			(IF ISVAR V THEN
02300				(LAMBDA (W);
02400					IF NULL W THEN (V.U).SUBST(U,V,L)
02500					ELSE IF CDR W = U THEN L
02600					ELSE 'NO)
02700				(ASSOC(V,L))
02800			 ELSE 'NO)
02900		ELSE (LAMBDA(W);MATCHA(SUBLIS(W,CAR U),
03000			SUBLIS(W,CAR V),W))(MATCHA(CDR U,CDR V,L));
03100	
03200	ISVAR X ← X MEMBER '(X Y Z U V W);
03300	
03400	SUBLIS(W,E) ←
03500		IF ATOM E THEN
03600			(LAMBDA (Z); IF NULL Z THEN E ELSE CDR Z)
03700			(ASSOC(E,W))
03800		ELSE (LAMBDA(X,Y);
03900			IF X EQ CAR E AND Y EQ CDR E THEN E ELSE X.Y)
04000			(SUBLIS(W, CAR E),SUBLIS(W,CDR E));